package com.huaxonline.boot.mybatisplus.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fhs.core.trans.vo.TransPojo;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 基础实体类
 * 包含公共字段：创建时间、修改时间、创建人、修改人、逻辑删除标记
 * 注意：如果数据库表没有对应的字段，MyMetaObjectHandler会安全地跳过填充
 *
 * @author system
 * @since 1.0.0
 */
@Data
public abstract class SuperEntity implements Serializable, TransPojo {

    /**
     * 创建时间
     * 如果数据库表没有gmt_create字段，会自动跳过填充
     */
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;

    /**
     * 修改时间
     * 如果数据库表没有gmt_modified字段，会自动跳过填充
     */
    @TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;

    /**
     * 创建人
     * 如果数据库表没有created_by字段，会自动跳过填充
     */
    @TableField(value = "created_by", fill = FieldFill.INSERT)
    private String createdBy;

    /**
     * 修改人
     * 如果数据库表没有modified_by字段，会自动跳过填充
     */
    @TableField(value = "modified_by", fill = FieldFill.INSERT_UPDATE)
    private String modifiedBy;

    /**
     * 逻辑删除标记：0-未删除，1-已删除
     * 如果数据库表没有is_deleted字段，会自动跳过填充
     */
    @TableLogic
    @TableField(value = "is_deleted", fill = FieldFill.INSERT)
    private Integer isDeleted;
}
